This invention relates to the interactive authoring of 3D scenes and movies using a computer system.
A 3D scene typically comprises one or more 3D graphic objects placed in a background setting to create an informative or aesthetically pleasing image. Such 3D scenes may be used in generating image data files (e.g., GIF or JPEG files) or web pages (e.g., HTML or VRML files), or may be strung together in a sequence to create an animated 3D movie (e.g., MPEG-1 or Quicktime files). FIG. 2 shows an example of a 3D scene in which a teapot 41 rests on a horizontal surface 43 with a vertical surface 45 appearing in the background.
A 3D scene also may embody characteristics, other than its graphic elements, that affect how the scene appears to a human viewer. The scene of FIG. 2, for example, is illuminated by three separate spot light sources positioned at locations respectively behind the viewer over the left and right shoulders, and in front of and above the viewer. Different types, locations and numbers of light sources may be used as desired to create different effects.
Other scene characteristics include the orientation and position of the graphic objects in the scene relative to the viewer's eye point, which may be thought of as governed by what would be seen through a camera. The camera may be moved through virtual 3D space (forward, back, side-to-side, rotating around an object, etc.) to change how the scene appears to the viewer. The term "virtual" refers to the fact that the 3D scene, the space that it occupies and its graphic elements and characteristics, are conceptual rather than actual, but possess the functional (e.g., optical) properties of the physical entities that they represent. The camera in the 3D scene of FIG. 2 is oriented in virtual 3D space such that the viewer is presented with a side view of the teapot 41, with the viewer's eye positioned at a point slightly above the teapot and looking down at it.
Among other characteristics, the graphic objects in a 3D scene each may have a color, texture and/or material composition which will affect how the 3D scene appears to the viewer. The colors, textures and material compositions of the objects in the scene of FIG. 2 are such that the three light sources create bright reflection spots 47 and shadows 49 on the teapot 41 and on the horizontal surface 43.
The manner in which a 3D scene is "rendered"--the process of generating an image (or an image file) from data that describes the image--also affects how the resultant 3D scene appears to a viewer. In FIG. 2, "ray tracing" is used to create a photorealistic representation in 2D space of the 3D scene. Ray tracing is a rendering technique that creates shadows and reflections by following paths taken by rays of light in the scene. Other less sophisticated rendering techniques exist and may be used to generate images with less computer processing, and thus more quickly, although they tend to result in a less realistic scene. FIG. 3 shows how the scene of FIG. 2 appears when it is rendered without the benefit of ray tracing.
To create a 3D scene using conventional systems and methods is a painstaking and difficult process. In one such method, authors of 3D scenes must know and use high level programming languages (e.g., C++) to write long and complex computer programs that invoke specialized object libraries. Instructions within such programs specify each of the 3D objects that appear in the scene, including the background of the scene, and each of the scene's characteristics such as lighting, orientation, texture and color. The complexity of this method is evident from FIG. 4, which shows the basic structure of a C++ program of the type that may be used for generating 3D scenes.
Examples of programming tools that may be used to create 3D scenes include Silicon Graphics' "Open Inventor Toolkit" (described in Josie Wernecke, The Inventor Mentor, Addison-Wesley (1994); Josie Wernecke, The Inventor Toolmaker, Addison-Wesley (1994), and Open Inventor C++ Reference Manual, Addison-Wesley (1994)); "OpenGL" (described in Jackie Neider et al., OpenGL Programming Guide, Addison-Wesley (1993); and Pixar's "Renderman" (described in Steve Upstill, The Renderman Companion, Addison-Wesley (1990)).
Another conventional method by which an author may generate 3D scenes is to use an application program specifically designed for that purpose. Examples of such an application program include Alias's "Power Animator" and Wavefront's "Advanced Visualizer."
To effectively generate 3D scenes, an author must possess a considerable amount of knowledge, training and expertise. As a result, less knowledgeable authors generally have been precluded from using computer systems to create sophisticated and photorealistic 3D scenes. Even for those authors that possess the requisite skills, generation of 3D scenes using conventional techniques is a slow and difficult process.